home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 2
/
Atari Mega Archive CD - Volume 2.iso
/
8bit
/
cislib_a
/
lister.atr
< prev
next >
Wrap
Text File
|
1995-04-22
|
4KB
|
81 lines
10 REM PROGRAM LISTER
20 REM BY DANA NOONAN
30 REM COPYRIGHT 1982
40 REM SET-UP PROGRAM
50 DIM A$(500),F$(15),B$(20),R$(4),L$(12),Y$(1),D$(20),S$(30)
60 B$=" ":R$="REM "
70 OPEN #2,4,0,"K:":GOSUB 650
80 CLOSE #2:PK=PEEK(559):POKE 559,0
90 TRAP 720:OPEN #1,4,0,F$:OPEN #4,8,0,"P:":INPUT #1;A$
100 ? #4;CHR$(T);B$;F$;B$(7);"PAGE ";PG;B$(7);D$:? #4:? #4
110 ? #4;B$;"| | = Inverse";B$(7);"[ ] = Control";B$(7);"< > = Control Inverse":? #4:L=5:PG=PG+1:GOTO 140
120 REM GET DATA
130 TRAP 720:INPUT #1,A$
140 C=LEN(A$):RF=0:QF=0:S=0:LL=65*(T=18)+120*(T=15)
150 REM CHECK REMS, QUOTES, AND LINE NUMBERS
160 FOR I=1 TO C:A=ASC(A$(I,I))
170 IF A=34 OR A>159 THEN QF=1:GOTO 190
180 NEXT I
190 FOR N=2 TO 6:IF ASC(A$(N))<>32 THEN NEXT N
200 TRAP 210:IF A$(N+1,N+4)<>R$ THEN RF=1:TRAP 40000
210 IF RF=0 THEN ? #4:L=L+1
220 S=6-N:? #4;B$(12-S);CHR$(158);A$(1,N);" ";:N=N+1
230 IF QF=0 AND C<LL THEN ? #4;A$(N):GOTO 590
240 REM CHECK ASC VALUE
250 II=N:FOR I=N TO C:A=ASC(A$(I,I)):II=II+1
295 IF II>(LL+7) THEN ? #4;CHR$(155);B$(5);:L=L+1:LL=LL+65*(T=18)+120*(T=15)
300 IF A>31 AND A<125 THEN 560
310 IF A>159 AND A<254 THEN 490
320 IF A>127 AND A<155 THEN 430
330 IF A<27 THEN 460
340 RESTORE
350 READ D,DL,L$
360 IF D<>A THEN GOTO 350
365 IF (II+DL)>(LL+7) THEN ? #4;CHR$(155);B$(5);:L=L+1:LL=LL+65*(T=18)+120*(T=15)
370 ? #4;"[";L$;"]";:II=II+DL:NEXT I
380 DATA 27,8,ESCAPE,28,4,UP,29,6,DOWN,30,6,LEFT,31,7,RIGHT
390 DATA 125,7,CLEAR,126,10,BACK SPACE,127,5,TAB
400 DATA 156,13,DELETE LINE,157,13,INSERT LINE,158,11,CLEAR TAB,159,9,SET TAB
410 DATA 253,6,BELL,254,8,DELETE,255,8,INSERT
420 REM INVERSE CONTROL CHARACTERS
430 IF A=128 THEN ? #4;"<,>";:II=II+3:NEXT I
440 A=A-64:? #4;"<";CHR$(A);">";:II=II+2:NEXT I
450 REM CONTROL CHARACTERS
460 IF A=0 THEN ? #4;"[,]";:II=II+3:NEXT I
470 A=A+64:? #4;"[";CHR$(A);"]";:II=II+2:NEXT I
480 REM INVERSE NORMAL CHARACTERS
490 IF A=253 THEN ? #4;"<;>";:II=II+3:NEXT I
500 A=A-128:? #4;"|";CHR$(A);:II=II+2
510 TRAP 540:I=I+1:II=II+1:A=ASC(A$(I,I)):IF II>(LL+7) THEN ? #4;CHR$(155);B$(5);:L=L+1:LL=LL+65*(T=18)+120*(T=15)
520 IF A>159 AND A<253 THEN A=A-128:? #4;CHR$(A);:GOTO 510
530 ? #4;"|";:II=II+1:GOTO 295
540 TRAP 830:? #4;"|";:? #4:L=L+1:GOTO 590
550 REM PRINT LINE AND GET NEXT ONE
560 IF A=96 THEN ? #4;"[.]";:II=II+2:NEXT I
570 IF A=123 THEN ? #4;"[;]";:II=II+2:NEXT I
580 ? #4;CHR$(A);:NEXT I:? #4
590 L=L+1:IF L<60 THEN GOTO 130
600 FOR NN=1 TO 6-(L-60):? #4:NEXT NN
610 ? #4;B$;F$;B$(7);"PAGE ";PG:? #4:? #4:PG=PG+1:L=3:GOTO 130
620 REM END
630 ? #4:POKE 559,PK:GRAPHICS 0:POSITION 12,8:? "COPY COMPLETE":CLOSE #1:CLOSE #4:CLR :END
650 GRAPHICS 0:? :? " PROGRAM LISTER"
660 ? :? :? " ENTER FILE NAME:";:INPUT F$
665 IF F$(2,2)<>":" OR F$(3,3)<>":" THEN D$(20)=" ":D$(2)=D$
670 ? :? " DATE";:INPUT D$
680 ? :? " SOURCE";:INPUT S$
690 ? :? " CONDENSED PRINT (Y OR N)";:INPUT Y$:IF Y$<>"Y" AND Y$<>"N" THEN GOTO 690
700 IF Y$="Y" THEN T=15:LL=120:PG=1:RETURN
710 IF Y$="N" THEN T=18:LL=65:PG=1:RETURN
720 REM ERROR TRAPPING
730 IF PEEK(195)=136 THEN 620
740 TRAP 830:CLOSE #1:CLOSE #4:POKE 559,PK:OPEN #2,4,0,"K:"
750 IF PEEK(195)=170 THEN 790
760 IF PEEK(195)=138 THEN 810
770 ? CHR$(125):POSITION 7,10:? "CANNOT PRINT THIS LISTING"
780 POSITION 7,12:? "PRESS RETURN TO TRY AGAIN":GET #2,Q:CLR :RUN
790 IF PEEK(195)=170 THEN ? CHR$(125):POSITION 10,10:? "NO FILE BY THAT NAME"
800 POSITION 7,12:? "PRESS RETURN TO TRY AGAIN":GET #2,Q:CLR :RUN
810 ? CHR$(125):POSITION 5,10:? "CHECK PRINTER AND PRESS RETURN":GET #2,Q:GOTO 80
820 ? #4;">";:LN=LN-1:GOTO 300